/*
@Time : 2019/8/26 0026 15:31
@Author : visons
*/
package main

import (
	"fmt"
	"github.com/go-redis/redis"
	"time"
)

func StringTest(client *redis.Client) {
	//set(key，value，expiration)：给数据库中名称为key的string赋予值value，expiration为过期时间，0表示不过期。
	err := client.Set("key1", "hello", 5*time.Second).Err()
	if err != nil {
		fmt.Println(err)
		return
	}

	//get(key)：返回数据库中名称为key的string的value。
	result, err := client.Get("key1").Result()
	if err != nil {
		fmt.Println(err)
		return
	}
	fmt.Println(result)

	//getset(key, value)：将给定 key 的值设为 value ，并返回 key 的旧值(old value)。
	result, err = client.GetSet("key1", "world").Result()
	if err != nil {
		fmt.Println(err)
		return
	}
	fmt.Println(result)

	//setnx(key，value，expiration)：将 key 的值设为value,只有在 key 不存在时设置 key 的值。
	res, err := client.SetNX("key2", "hello3", 0).Result()
	if err != nil {
		fmt.Println(err)
		return
	}
	fmt.Println(res)

	//mget(key1, key2,…, key N)：返回库中多个string的value。
	//假设redis中有key1：hello1，key2：hello2
	results, err := client.MGet("key1", "key2").Result()
	if err != nil {
		fmt.Println(err)
		return
	}
	for _, value := range results {
		fmt.Println(value)
	}

	//mset(pairs ...interface{})：批量设置多个string的值。
	result, err = client.MSet("key1", "h1", "key2", "h2", "key3", "h3").Result()
	if err != nil {
		fmt.Println(err)
		return
	}
	fmt.Println(result)

	//incr(key)：名称为key的string增1操作。
	//incrby(key, integer)：名称为key的string增加integer。
	//decr(key)：名称为key的string减1操作。
	//decrby(key, integer)：名称为key的string减少integer。
	//append(key, value)：名称为key的string的值附加value。

}
